abstract methods and classes